// 声明库
#include<stdio.h>

// 函数原型
void GetContent(char *);
void test_getc(char []);
// 表示先定义函数，再加上`()`运算符以将其理解为指向函数机器码对应的地址
void (*ptr_GetContent)(char[])=&GetContent;
void (*ptr_test_getc)(char[])=&test_getc;// &符号可省略

// 数据
typedef struct
{
	int a;
	int * ptr;
	void (*function)();
	void (*test_getc)();
} File;

// 函数
void GetContent(char file[2000])
{
	char ch;
	FILE *self;
	self=fopen(file, "r");
	while ((ch=getc(self))!=EOF)
    {
        printf("%c", ch);
    };
	printf("\n");
	fclose(self);
}
void test_getc(char file[2000])
{
	char ch;
	FILE * GetFile=fopen(file, "r");
	for(int index=0; index<200; index+=1){
		char data=getc(GetFile);
		putc(data, stdout);
	}
	printf("\n");
	fclose(GetFile);
}

// 主程序
int main()
{
	File GetFile={
		.a=10,
		.ptr=&GetFile.a,
		.function=*ptr_GetContent,
		.test_getc=&test_getc,// 也可使用`*ptr_test_getc`
	};
	GetFile.function("enum.c");
	// GetFile.test_getc("enum.c");
    return 0;
}
